home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / catD / spl.z / spl
Encoding:
Text File  |  1998-10-30  |  8.2 KB  |  132 lines

  1.  
  2.  
  3.  
  4. ssssppppllll((((DDDD3333))))                                                                ssssppppllll((((DDDD3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      _ssss_pppp_llll - block/allow interrupts on a processor
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _<<<<_ssss_yyyy_ssss_////_dddd_dddd_iiii_...._hhhh_>>>>
  13.      _iiii_nnnn_tttt _ssss_pppp_llll_bbbb_aaaa_ssss_eeee_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  14.      _iiii_nnnn_tttt _ssss_pppp_llll_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  15.      _iiii_nnnn_tttt _ssss_pppp_llll_dddd_iiii_ssss_kkkk_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  16.      _iiii_nnnn_tttt _ssss_pppp_llll_ssss_tttt_rrrr_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  17.      _iiii_nnnn_tttt _ssss_pppp_llll_tttt_tttt_yyyy_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  18.      _iiii_nnnn_tttt _ssss_pppp_llll_hhhh_iiii_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  19.      _iiii_nnnn_tttt _ssss_pppp_llll_0000_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  20.      _iiii_nnnn_tttt _ssss_pppp_llll_7777_((((_vvvv_oooo_iiii_dddd_))))_;;;;
  21.      _vvvv_oooo_iiii_dddd _ssss_pppp_llll_xxxx_((((_iiii_nnnn_tttt _o_l_d_l_e_v_e_l_))))_;;;;
  22.  
  23.    AAAArrrrgggguuuummmmeeeennnnttttssss
  24.      _o_l_d_l_e_v_e_l  Last set priority value (only _ssss_pppp_llll_xxxx has an input argument).
  25.  
  26. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  27.      The _ssss_pppp_llll functions block or allow servicing of interrupts on the processor
  28.      on which the function is called.
  29.  
  30.    RRRReeeettttuuuurrrrnnnn VVVVaaaalllluuuueeeessss
  31.      All _ssss_pppp_llll functions except _ssss_pppp_llll_xxxx return the previous priority level for use
  32.      by _ssss_pppp_llll_xxxx.
  33.  
  34. UUUUSSSSAAAAGGGGEEEE
  35.      Hardware devices are assigned to interrupt priority levels depending on
  36.      the type of device.  Each _ssss_pppp_llll function which blocks interrupts is
  37.      associated with some machine dependent interrupt priority level and will
  38.      prevent interrupts occurring at or below this priority level from being
  39.      serviced on the processor on which the _ssss_pppp_llll function is called.
  40.  
  41.      On a multiprocessor system, interrupts may be serviced by more than one
  42.      processor and, therefore, use of a _ssss_pppp_llll function alone is not sufficient
  43.      to prevent interrupt code from executing and manipulating driver data
  44.      structures during a critical section.  Drivers that must prevent
  45.      execution of interrupt-level code in order to protect the integrity of
  46.      their data should use basic locks for this purpose [see _LLLL_OOOO_CCCC_KKKK______AAAA_LLLL_LLLL_OOOO_CCCC(D3)].
  47.  
  48.      The _ssss_pppp_llll functions include the following:
  49.  
  50.      _ssss_pppp_llll_bbbb_aaaa_ssss_eeee      Block no interrupts.  Should only be used by base-level code
  51.                   that knows it is not nested within any section of protected
  52.                   critical code.
  53.  
  54.      _ssss_pppp_llll_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt   Block functions scheduled by _iiii_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt and _dddd_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt.
  55.  
  56.      _ssss_pppp_llll_dddd_iiii_ssss_kkkk      Block disk device interrupts.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.                                                                         PPPPaaaaggggeeee 1111
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. ssssppppllll((((DDDD3333))))                                                                ssssppppllll((((DDDD3333))))
  70.  
  71.  
  72.  
  73.      _ssss_pppp_llll_ssss_tttt_rrrr       Block STREAMS interrupts.
  74.  
  75.      _ssss_pppp_llll_tttt_tttt_yyyy       Used by a TTY driver to protect critical code.  _ssss_pppp_llll_tttt_tttt_yyyy is
  76.                   mapped to _ssss_pppp_llll_ssss_tttt_rrrr.
  77.  
  78.      _ssss_pppp_llll_hhhh_iiii        Block all interrupts.  Can be used in any type of driver to
  79.                   mask out all interrupts including the clock, and should be
  80.                   used very sparingly.
  81.  
  82.      _ssss_pppp_llll_0000         Equivalent to _ssss_pppp_llll_bbbb_aaaa_ssss_eeee.
  83.  
  84.      _ssss_pppp_llll_7777         Equivalent to _ssss_pppp_llll_hhhh_iiii.
  85.  
  86.      To ensure driver portability, the named _ssss_pppp_llll functions (such as _ssss_pppp_llll_bbbb_aaaa_ssss_eeee or
  87.      _ssss_pppp_llll_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt) should be used whenever possible.  The numbered _ssss_pppp_llll functions
  88.      (_ssss_pppp_llll_0000 and _ssss_pppp_llll_7777) should be used only when an interrupt priority level must
  89.      be set to a specific value.
  90.  
  91.      Calling a given _ssss_pppp_llll function will block interrupts specified for that
  92.      function as well as interrupts at equal and lower levels.  The notion of
  93.      low vs. high levels assumes a defined order of priority levels.  The
  94.      following partial order is defined:
  95.  
  96.           _ssss_pppp_llll_bbbb_aaaa_ssss_eeee _<<<<_==== _ssss_pppp_llll_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt _<<<<_==== _ssss_pppp_llll_dddd_iiii_ssss_kkkk_,,,,_ssss_pppp_llll_ssss_tttt_rrrr _<<<<_==== _ssss_pppp_llll_hhhh_iiii
  97.      The ordering of _ssss_pppp_llll_dddd_iiii_ssss_kkkk and _ssss_pppp_llll_ssss_tttt_rrrr relative to each other is not defined.
  98.  
  99.      When setting a given priority level, the previous level returned should
  100.      be saved and _ssss_pppp_llll_xxxx or _UUUU_NNNN_LLLL_OOOO_CCCC_KKKK(D3) should be used as appropriate to restore
  101.      this level.
  102.  
  103.      Interrupt-level code must never lower the interrupt priority level below
  104.      the level at which the interrupt handler was entered.  For example, if an
  105.      interrupt handler is entered at the priority level associated with
  106.      _ssss_pppp_llll_dddd_iiii_ssss_kkkk, the handler must not call _ssss_pppp_llll_tttt_iiii_mmmm_eeee_oooo_uuuu_tttt.
  107.  
  108.    LLLLeeeevvvveeeellll
  109.      Base or Interrupt.
  110.  
  111.    SSSSyyyynnnncccchhhhrrrroooonnnniiiizzzzaaaattttiiiioooonnnn CCCCoooonnnnssssiiiiddddeeeerrrraaaattttiiiioooonnnnssss
  112.      All _ssss_pppp_llll functions do not sleep.
  113.  
  114.      Driver-defined basic locks and read/write locks may be held across calls
  115.      to these functions, but the _ssss_pppp_llll call must not cause the priority level to
  116.      be lowered below the level associated with the lock.
  117.  
  118.      Driver-defined sleep locks may be held across calls to these functions.
  119.  
  120. RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEESSSS
  121.      _LLLL_OOOO_CCCC_KKKK(D3), _LLLL_OOOO_CCCC_KKKK______AAAA_LLLL_LLLL_OOOO_CCCC(D3),
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.                                                                         PPPPaaaaggggeeee 2222
  129.  
  130.  
  131.  
  132.